home *** CD-ROM | disk | FTP | other *** search
- uplevel ?level? command ?command ...?
- All of the command arguments are concatenated as if
- they had been passed to concat; the result is then
- evaluated in the variable context indicated by level.
- Uplevel returns the result of that evaluation. If
- level is an integer, then it gives a distance (up the
- procedure calling stack) to move before executing the
- command. If level consists of # followed by a number
- then the number gives an absolute level number. If
- level is omitted then it defaults to 1. Level cannot
- be defaulted if the first command argument starts with
- a digit or #. For example, suppose that procedure a
- was invoked from top-level, and that it called b, and
- that b called c. Suppose that c invokes the uplevel
- command. If level is 1 or #2 or omitted, then the
- command will be executed in the variable context of b.
- If level is 2 or #1 then the command will be executed
- in the variable context of a. If level is 3 or #0 then
- the command will be executed at top-level (only global
- variables will be visible). The uplevel command causes
- the invoking procedure to disappear from the procedure
- calling stack while the command is being executed. In
- the above example, suppose c invokes the command
-
- uplevel 1 {set x 43; d}
-
- where d is another Tcl procedure. The set command will
- modify the variable x in b's context, and d will
- execute at level 3, as if called from b. If it in turn
- executes the command
-
- uplevel {set x 42}
- then the set command will modify the same variable x in
- b's context: the procedure c does not appear to be on
- the call stack when d is executing. The command ``info
- level'' may be used to obtain the level of the current
- procedure. Uplevel makes it possible to implement new
- control constructs as Tcl procedures (for example,
- uplevel could be used to implement the while construct
- as a Tcl procedure).
-